package cn.tedu.nybikeT.service.impl;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

import cn.tedu.nybikeT.pojo.StationInfoDO;
import cn.tedu.nybikeT.util.HttpUtils;

public class StationDataService {
	
	/**
	 * 请求第三方接口获取站点信息数据，并转化成JavaBean的集合的方法
	 * @param stationInfoUrl 第三方接口url
	 * @return 封装了站点信息的JavaBean的集合
	 */
	public List<StationInfoDO> getStationInfo(String stationInfoUrl){
		// 请求第三方接口，返回JSON字符串数据
		String result=HttpUtils.get(stationInfoUrl);
		// 使用fastjson解析数据
		JSONObject object=JSON.parseObject(result);
		// 将数据解析成JavaBean的集合
		List<StationInfoDO> list=JSON.parseObject(object.getJSONObject("data").getJSONArray("stations").toString(),new TypeReference<ArrayList<StationInfoDO>>() {});
		return list;
	}
	
	/**
	 * 请求站点信息和站点状态数据，并存入数据库的方法
	 */
	public void saveData() {
		String infoUrl="http://gbfs.citibikenyc.com/gbfs/en/station_information.json";
		// 请求并保存站点信息数据
		List<StationInfoDO> list=new StationDataService().getStationInfo(infoUrl);
		File file=new File("station_info.csv");
		try(Writer writer=new FileWriter(file);
				BufferedWriter bw=new BufferedWriter(writer)){
			for(StationInfoDO info:list) {
				bw.write(info.toString());
				bw.newLine();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		StationDataService.getInstance().saveData();
	}
	
	// 单例模式
	private StationDataService() {}
	
	private static StationDataService service=new StationDataService();
	
	public static StationDataService getInstance() {
		return service;
	}
	
}
